Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: [C++]truy xuất dữ liệu trong C++

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    35

    Mặc định [C++]truy xuất dữ liệu trong C++

    mình có class này

    Code:
    class Vecto
    {
        int n;
        int *data;
        public:
            void tong(Vecto a,Vecto b); 
    };
    tại sao trong hàm tổng mình lại truy xuất đc a.data[i]b.data[i] như thế này
    Code:
    void Vecto::tong(Vecto a,Vecto b)
    {
        int i;
        for (i=0;i<n;i++) data[i]=a.data[i]+b.data[i];
    }
    mặc dù biết hàm void tong(Vecto a,Vecto b); là hàm thành viên của class Vecto nhưng mà nó đâu phải là hàm thành viên của 2 đối tượng cục bộ Vecto aVecto b đâu tại sao lại truy xuất đc
    thương dân như con

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Vậy bây giờ sự việc là : NÓ ĐÃ TRUY XUẤT ĐƯỢC và ta nên học hỏi điều đó. Thừa nhận ko chứng minh.
    Xem đó là 1 điều "Chân lý", và thừa nhận nó.
    Lúc nào gặp vấn đề "Truy xuất được tham số này nhưng ko truy suất được tham số kia" thì mới có điều để thắc mắc và mang lên hỏi.
    Còn cái này chỉ tựa như việc học sinh cấp 1 cô giáo bảo : 1+2 = 3 thì nghe răm rắp là 1+2=3
    Sau này lớn lên ắt tự hiểu : VÌ SAO LẠI THẾ

    Vì sao lại ko giải thích luôn mà lại rườm rà vậy ? Bởi vì giờ có giải thích cái điều hiển nhiên đúng như vậy thì cũng chả lòi thêm được vấn đề gì ghê gớm.
    Đã được chỉnh sửa lần cuối bởi clchicken : 17-02-2012 lúc 09:15 AM.
    Um Mani Padme Hum...!!

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    35

    =))
    vậy là cậu ko muốn trả lời
    mình thấy cái này rất cơ bản và dễ làm người học lạc hướng, trong tài liệu thì nói chỉ có lớp và hàm friend mới truy xuất đc dữ liệu private, nhưng đây thì rõ mồn một là 2 đối tượng ko liên quan j đến hàm đó mà vẫn truy xuất đc
    thương dân như con

  4. #4
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Thôi tóm lại là thế này:
    Bạn xem nó như là LUẬT. Và đã là LUẬT thì cấm cãi, chỉ việc làm theo. LUẬT cho phép làm thì ta làm
    Đơn giản vậy thôi NHÉ !
    Um Mani Padme Hum...!!

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    35

    vớ vẩn, cậu nói cái quái j thế, cái này đâu phải mấy câu hỏi đại loại như: "vì sao ko ghi là a int mà lại ghi int a" đâu, làm quái j mà phải nhớ máy móc ???
    thương dân như con

  6. #6
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Mặc định [C++]truy xuất dữ liệu trong C++

    Cãi nhau gì mà như giữa chợ thế!

    Bạn học lý thuyết thiếu sót (bớt cãi nhau một chút có lẽ có thời gian tìm hiểu lý thuyết nhiều hơn)

    Các phần tử (hàm, thuộc tính, trường) được định nghĩa trong một lớp có hai loại:

    - loại có từ khóa static (phần tử tĩnh) là phần tử của lớp. Loại này chỉ liên quan đến lớp và được truy cập lẫn nhau nhưng không truy cập được các phần tử không tĩnh. Loại này cả lớp và đối tượng đều được dùng.

    - loại không có từ khóa static là phần tử của đối tượng. Loại này chỉ có đối tượng được dùng.

    Trong vd trên, không có phần tử nào được định nghĩa là của lớp cả (không có static), cho nên chúng là phần tử của đối tượng.

    Bên trên chỉ nói về "dùng", còn việc "gọi thẳng" ra thì còn phải tùy thuộc vào từ khóa public/protected/private

  7. #7
    Ngày gia nhập
    02 2009
    Bài viết
    35

    nực cười, hình như ko ai hiểu ý của mình cả
    ý mình là mảng data[] đc khai báo là private mà sao trong hàm tong() nó lại có thể truy xuất đc a.data[i]b.data[i] mặc dù 2 đối tượng a,b ko liên quan j đến hàm đó
    Đã được chỉnh sửa lần cuối bởi takiemtam : 17-02-2012 lúc 01:34 PM.
    thương dân như con

  8. #8
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Tại tôi nói rồi mà bạn không chịu nghe .
    Bạn không nghe thì bạn tự làm khổ bản thân vậy.
    Đã nói là cái này nó chả có gì ghê gớm cao siêu, biết cũng dc ko biết cũng chả sao. Chả ảnh hưởng gì đến cái code. "Người ta" cho phép làm thế thì cứ việc làm thế.
    Rồi một khi đã làm việc với nó nhiều sẽ tự ngộ ra điều HIển nhiên Đúng đó thôi.

    Thật khó lòng để giải thích vì sao 1+2 = 3 . Mà muốn giải thích cho rõ ràng ra ngọn ngành thì phải đụng đến nào là Cơ sở toán, nào là xây dựng tập số , tập đếm được tập không đếm được vân vân <----- Biết để làm cái gì ?
    Um Mani Padme Hum...!!

  9. #9
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trích dẫn Nguyên bản được gửi bởi takiemtam Xem bài viết
    Code:
    class Vecto
    {
        int n;
        int *data;
        public:
            void tong(Vecto a,Vecto b); 
    };
    tại sao trong hàm tổng mình lại truy xuất đc a.data[i]b.data[i] như thế này
    Code:
    void Vecto::tong(Vecto a,Vecto b)
    {
        int i;
        for (i=0;i<n;i++) data[i]=a.data[i]+b.data[i];
    }
    mặc dù biết hàm void tong(Vecto a,Vecto b); là hàm thành viên của class Vecto nhưng mà nó đâu phải là hàm thành viên của 2 đối tượng cục bộ Vecto aVecto b đâu tại sao lại truy xuất đc
    Nó là thành viên của đối tượng lớp chứ không phải là thành viên của lớp. Hàm thành viên của lớp phải có từ khóa static.

    Trích dẫn Nguyên bản được gửi bởi takiemtam Xem bài viết
    nực cười, hình như ko ai hiểu ý của mình cả
    ý mình là mảng data[] đc khai báo là private mà sao trong hàm tong() nó lại có thể truy xuất đc a.data[i]b.data[i] mặc dù 2 đối tượng a,b ko liên quan j đến hàm đó
    Hai đối tượng a và b là đối tượng của lớp Vecto cho nên có liên quan đến tất cả các hàm trong lớp Vecto.
    Hàm tong là hàm đối tượng (không phải hàm lớp/hàm static) của Vecto nên có quyền truy cập các trường của Vecto dù cho có private hay không.

    Chưa biết phân biệt giữa đối tượng và lớp thì về học lại lý thuyết đi.

    Nực cười chỗ mình không hiểu gì hết lại cứ cho rằng người ta không hiểu mình.

  10. #10
    Ngày gia nhập
    02 2009
    Bài viết
    35

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Nó là thành viên của đối tượng lớp chứ không phải là thành viên của lớp. Hàm thành viên của lớp phải có từ khóa static.
    Hai đối tượng a và b là đối tượng của lớp Vecto cho nên có liên quan đến tất cả các hàm trong lớp Vecto.
    Hàm tong là hàm đối tượng (không phải hàm lớp/hàm static) của Vecto nên có quyền truy cập các trường của Vecto dù cho có private hay không.
    cám ơn bạn nhé, nghĩa là hàm thành viên có quyền truy cập mọi đối tượng của lớp đó, vậy mà mình cứ tưởng nó chỉ truy cập đc duy nhất đối tượng gọi hàm đó =.= cũng vì lúc cô giảng phần hàm static đau bụng quá ko tập trung đc
    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Tại tôi nói rồi mà bạn không chịu nghe .
    Bạn không nghe thì bạn tự làm khổ bản thân vậy.
    Đã nói là cái này nó chả có gì ghê gớm cao siêu, biết cũng dc ko biết cũng chả sao. Chả ảnh hưởng gì đến cái code. "Người ta" cho phép làm thế thì cứ việc làm thế.
    Rồi một khi đã làm việc với nó nhiều sẽ tự ngộ ra điều HIển nhiên Đúng đó thôi.

    Thật khó lòng để giải thích vì sao 1+2 = 3 . Mà muốn giải thích cho rõ ràng ra ngọn ngành thì phải đụng đến nào là Cơ sở toán, nào là xây dựng tập số , tập đếm được tập không đếm được vân vân <----- Biết để làm cái gì ?
    bạn đừng lắm mồm nữa, rách việc
    thương dân như con

Các đề tài tương tự

  1. Trả lời: 1
    Bài viết cuối: 20-06-2012, 04:39 PM
  2. Tạo và truy xuất file xml trong C#?
    Gửi bởi rogerminh2401 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 07-04-2011, 08:19 AM
  3. truy xuất tập tin trong C bác nào chỉ em với
    Gửi bởi txpro trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 22-10-2009, 10:18 PM
  4. bác nào rành truy xuất tập tin trong C, chỉ em với
    Gửi bởi stormswt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 06-01-2008, 12:23 AM
  5. Cách truy xuất đối tượng trong lập trình C
    Gửi bởi rox_rook trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 21-11-2007, 02:30 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn