2011-10-07 34 views
5

Tôi đã rời khỏi C++ một lúc và tôi đang gặp một chút rắc rối với công cụ này. Tôi sẽ tha cho bạn mã xấu của tôi - có thể ai đó vui lòng đăng 'câu trả lời mô hình' để viết một tệp tiêu đề đơn giản và tệp nguồn cho một lớp nhỏ với một hàm tạo chấp nhận một vài giá trị và chuyển một vài vào cơ sở của nó class constructor? Tôi lo lắng rằng tôi đang làm một cái gì đó nội tuyến do nhầm lẫn. Cảm ơn bạn.cách viết các hàm tạo kế thừa C++

Đôi khi các câu trả lời đơn giản nhất là khó nhất để tìm các ví dụ rõ ràng về trên internet.

+0

Tại sao downvote? –

+0

Bạn đang lo lắng về điều gì liên quan đến nội tuyến? –

Trả lời

8
// ExampleClass.h 
#ifndef ExampleClass_H_ 
#define ExampleClass_H_ 

#include "ExampleBase.h" 

class ExampleClass : public ExampleBase { 
public: 
    ExampleClass(int a); 
}; 

#endif 


// ExampleClass.cpp 
#include "ExampleClass.h" 

ExampleClass::ExampleClass(int a) : ExampleBase(a) 
{ 
    // other constructor stuff here 
} 
6

initializer list được sử dụng để khởi tạo các lớp cơ sở. Khởi tạo các lớp cơ sở trước các thành viên cá thể. Non-virtual base classes are initialized from left to right, vì vậy nếu bạn có nhiều cơ sở, hãy khởi tạo chúng theo thứ tự chúng được khai báo.

Dưới đây là một ví dụ về truyền đối số cho các nhà xây dựng lớp cơ sở:

#include <iostream> 

struct Base { 
    Base(int i) { 
     std::cout << i << std::endl; 
    } 
}; 

struct Derived : public Base { 
    Derived(int i) : Base(i) {} 
}; 
+0

Thành thật mà nói, tôi hơi ngạc nhiên rằng tôi không thể tìm thấy một ví dụ đơn giản như thế này trong C++ FAQ. Nếu bất cứ ai có thể thả một liên kết đến phần thích hợp, tôi sẽ đánh giá cao nó. –

4

Thấy như OP yêu cầu phiên bản phi inline, tôi sẽ repost với những thay đổi.

struct Base { 
    Base (int); 
}; 

struct Derived : public Base { 
    Derived (int); 
}; 

Derived :: Derived (int i) 
: Base (i) 
{ 
} 
+0

Đây phải là câu trả lời được chấp nhận mặc dù thiếu phiếu bầu. –

1
class Parent 
{ 
    // Parent Constructor 
    Parent(int x) 
    { 
     // Constructor Code 
    } 
}; 

class Child : public Parent 
{ 
    // Child Constructor 
    Child(int x, int y, int z) : Parent(x) 
    { 
     // Constructor Code 
    } 
};