2012-05-24 13 views
5

Tôi đang đọc một cuốn sách, hướng dẫn Primer cho C++.Các thuật ngữ C++ này có đúng không?

Tôi nghĩ rằng tôi đã bị treo nó lên đến một điểm, tôi chỉ muốn làm rõ một vài điều.

  1. Nó nói rằng một class giống như một kiểu dữ liệu (Kiểu dữ liệu là int, char, vv ..) và một Object/Instance cũng giống như một biến. Điều này có đúng không?

  2. Biểu mẫu dữ liệu là gì?

  3. Phần nào của tuyên bố là tuyên bố? Có phải là data type + the variable và số = là bài tập không?

+4

Tại sao rất nhiều downvotes? – TeaOverflow

+0

Tôi không biết; Tôi nghĩ rằng các câu hỏi sẽ đơn giản để trả lời và tôi đã dành thời gian để viết ra các câu hỏi để họ có thể được trả lại hiệu quả. – Ayfiaru

+2

Tôi nghĩ nó hơi khắc nghiệt. Nếu anh ấy đã đọc một cuốn sách và anh ấy nhầm lẫn thì đó là những câu hỏi hợp lệ. –

Trả lời

5

Không hoàn toàn.

Một lớp là "giống như một kiểu dữ liệu" theo nghĩa là nó là một mẫu để tạo một đối tượng, nhưng nó không phải là một đối tượng mà bạn có thể sử dụng.

Khi bạn sử dụng mẫu đó để tạo một thể hiện của đối tượng, bạn có thể sử dụng đối tượng đó. Bạn có thể tạo bao nhiêu trường hợp tùy thích - bạn có thể nghĩ về những trường hợp đó dưới dạng biến.

Ví dụ:

class Person 
{ 
    public: 
     Person() : name("Joe Bloggs") {} 

     std::string getName() { return name; } 

     void setName(std::string n) { name = n; } 

    private: 
     std::string name;  
}; 

Đây là một định nghĩa lớp cho một người. Nó không phải là một biến. Bạn không thể gọi setName trên nó vì nó không tồn tại. Nhưng khi bạn làm:

int main() 
{ 
    Person p, q; 
    p.setName("Jill Bloggs"); 
    q.setName("Bob King"); 
    std::cout << p.getName() << " " << q.getName() << std::endl; 
} 

Bạn đã tạo hai trường hợp người mà bạn có thể gán, thay đổi và sử dụng - chúng là các biến được gọi là trường hợp.

Tôi không biết ý nghĩa của "biểu mẫu dữ liệu", bỏ qua điều đó.

Như để khai báo - tuyên bố nói rằng một thể hiện của một cái gì đó sẽ có mặt. Ví dụ: nếu bạn đang tạo lớp học và tệp tiêu đề của bạn có:

class foo 
{ 
    public: 

     foo(int value); 

     void bar(); 

    private: 
     int x; 
}; 

Bạn tuyên bố rằng bạn có một hàm gọi là thanh trả về void và bạn có số nguyên gọi là x.

Không có bộ nhớ nào được cấp cho biến, x và không có định nghĩa nào được cung cấp hoặc thanh, vì vậy chúng chỉ là khai báo. tệp nguồn của bạn có lẽ sẽ cung cấp định nghĩa cho thanh như:

void foo::bar() 
{ 
    //some code 
} 

và definiton constructor cho foo sẽ khởi tạo x với giá trị và kiểm soát cách nó được tạo ra (với một danh sách initializer):

foo::foo(int value) : x(value) 
{ 
    //some code 
} 
+0

Haha cảm ơn rất nhiều vì đã dành thời gian giải thích! – Ayfiaru

+1

Không sao cả. Nó trở nên dễ dàng hơn - bạn sẽ thấy rằng bạn có thể viết lại dự án cuối cùng của trường đại học năm thứ 2 đã mất 3 tháng trong 15 phút trong năm cuối của bạn :) (giả sử bạn đang học đại học, haha). –

+0

Tuyệt vời, cảm ơn;) – Ayfiaru

Các vấn đề liên quan