谁能给我讲一下类,怎么具有灵活构造类,运用类的能力

christiandior 2003-08-24 12:04:23
我看类,不明白。c++类和<.cpp>,<.H>文件的关系


还向问高手,怎么才能具有 算法的思维。灵活的构造类,使用类。

谢谢大家
...全文
27 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2003-10-06
  • 打赏
  • 举报
回复
继承嘛,骂一句:楼主你丫也就是一初级 coder (笑,别当真)
那么就是
class 楼主 : public JuniorCoder {...} // 其中必然包含了一个 virtual destructor,一个 virtual member function Question(const string* _title, const string* _content, unsigned _mark); 因为是“楼主”都有 Question 的方法,不同楼主有不同的水平,所以应该用 virtual 的。
然后
楼主 *christiandior = new 楼主();
哈哈,差不多这就是 OO 基础了^_^
Wolf0403 2003-10-06
  • 打赏
  • 举报
回复
无他,唯手熟耳。
来个多态的:

class Base
{
public:
Base(int i):m_i(i){}
void Tell() { cout << "Base with " << tell() << endl; }
virtual ~Base() {cout << "Base destructed!" << endl;}
protected:
virtual int tell() {cout << "Base::tell()" << endl; return m_i;}
private:
int m_i;
};

class Derived : public Base
{
public:
Derived(int i):Base(i){ cout << "Derived with " << i << ".\n Calling Base::__ctor(i)" << endl;}
void Tell() {cout << "Derived with " << tell() << endl;}
~Derived(){cout << "Derived destructed!" << endl;}
protected:
int tell() {cout << "Derived::tell()" << endl; return Base::tell();}
};

int main()
{
Base *p = new Derived(3);
p->Tell();
delete p;
}
// 注意虚拟函数和非虚拟函数调用结果的区别。
robbie24 2003-10-06
  • 打赏
  • 举报
回复
能有什么办法?多看多练,其实很多东西只是你不'习惯'而已.(真的,我很诚实,相信我)就好象新同学,相处久了,面不就熟悉了吗?(笑),当然了,前面是说笑,你自己也要用类的方式去思考.
其实面向对象的方式因该很适合我们...想想你周围不就是一个个的objects吗?(笑)
物体都有属性(我们用data members实现),但是物体又有方法即'动作'或者'行为',你可以这么去想,天哪,孩子,你想想你自己不就是个'东西'吗?(笑)(好了,我们用member function实现),当然了,这个只是个class(概念上的),于是把它实力化一下,产生一个object,孩子,人类的实体不就有你一个吗?
多想想.设计类,就是这么想,你可以把过去用C做过的数据结构用CPP实现一下.
至于继承什么.这个是后话了.再议~

Demonx 2003-10-06
  • 打赏
  • 举报
回复
不好意思,不小心。
代码段
class test
{
public:
void accept()
{
cout<<"Enter Your Name: ";
char name[10]
cin>>name;
}
void output()
{
cout<<"Hello, "<<name<<" !"<<endl;
}
};
应该写成:
class test
{
char name[10];
public:
void accept()
{
cout<<"Enter Your Name: ";
cin>>name;
}
void output()
{
cout<<"Hello, "<<name<<" !"<<endl;
}
};
至于虚函数之类,这么简单的示例好像也没办法使用。(个人意见)
angelboycn 2003-09-17
  • 打赏
  • 举报
回复
Demonx(岚) ( ) 的程序有问题,name只是函数accept()的一个局部变量,怎么可能在output()中引用这个变量呢?而且Demonx(岚)写的这个程序只能称之为基于对象的程序,因为只是把接口和数据简单的封装了一下。。。而面向对象的程序还包括层次化的类体系结构和动态绑定的成员函数调用(即虚拟函数调用)。。。

其实要想灵活构造和使用类关键就是要多练,多思考。。。捷径是没有的,不然我们还看书干什么。
hm_ares 2003-09-17
  • 打赏
  • 举报
回复


这段代码里面,name没有声明为私有变量(或者说是成员变量),所以程序执行的效果未知!!
liao2001 2003-09-17
  • 打赏
  • 举报
回复
好深奥~~
christiandior 2003-09-09
  • 打赏
  • 举报
回复
谢谢各位 的热心帮助
Demonx 2003-08-27
  • 打赏
  • 举报
回复
楼主有兴趣的话,比较一下,应该可以明白。
Demonx 2003-08-27
  • 打赏
  • 举报
回复
举例给楼主说明:
学习C++的第二题:
#include <iostream.h>
void main()
{
cout<<"Enter Your Name: ";
char name[10]
cin>>name;
cout<<"Hello, "<<name<<" !"<<endl;
}
上面的代码是面向过程的写法,下面我用面向对象的写法写下:
#include <iostream.h>
class test
{
public:
void accept()
{
cout<<"Enter Your Name: ";
char name[10]
cin>>name;
}
void output()
{
cout<<"Hello, "<<name<<" !"<<endl;
}
};
void main()
{
test test1;
test1.accept();
test1.output();
}
上面的代码是面向对象的过程,因为创建了类和对象。
下面的代码就是用头文件处理的
//test.h
class test
{
public:
void accept()
{
cout<<"Enter Your Name: ";
char name[10]
cin>>name;
}
void output()
{
cout<<"Hello, "<<name<<" !"<<endl;
}
};


//test.cpp
#include <iostream>
#include "test.h"
void main()
{
test test1;
test1.accept();
test1.output();
}


wxj797 2003-08-25
  • 打赏
  • 举报
回复
同意airtraffic(free flight) ( )的说法
但要真正明白类的用法,还要多练习,多实践。
nirvana_li 2003-08-25
  • 打赏
  • 举报
回复
c++类和<.cpp>,<.H>文件的关系
它们有什么关系呢??一个类和文件的关系就有点扯远了。应该没什么“厉害”关系吧。
.cpp是程序源文件
.h是头文件
最后说明类:
类是什么?
面向对象软件的基本组成物

类定义数据类型,就如同 C 中的结构。从计算机科学的角度来理解,类型由状态集合和转换这些状态的操作集合组成。因为 int 既有状态集合,也有象 i + j 或 i++ 等这样的操作,所以 int 是一种类型。同样,类提供了一组操作集合(通常是 public: )和一组描述类型实例所拥有的抽象值的数据集合。

可以将 int 看作为一个有 operator++ 等成员函数的类。(int 实际并不是一个类,但是基本类似:一个类是一种类型,就如同 int 是一种类型)

注意: C 程序员可以将类看作为成员默认为私有的结构。但是,如果那是你对类的全部认识,那么你可能要经历个人的思考模式的转变了。

开始不理解是很正常的,多看一些书就好了~~就象周星驰的电影里面说的:“吐啊,吐的就习惯了。”
airtraffic 2003-08-24
  • 打赏
  • 举报
回复
一般类的定义,各个变量、函数的声明,等等在头文件中

而类的实现细节、函数的实现等在执行文件中,这样是为了封装,只给用户类的接口,而隐藏实现、防止用户修改文件,这样维护软件也很方便。

建议你多看看OO方面的书。
Smartdoggie 2003-08-24
  • 打赏
  • 举报
回复
熟能生巧
没有尝试如何知道何为好何为不好
nsly 2003-08-24
  • 打赏
  • 举报
回复
没有捷径,多看书,多实践。
培养用面向对象的思维方式去分析问题。

64,266

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧