在CSDN上看到一个帖子,有个人提出了一个问题,下面贴出帖子的内容,个人感觉比较有意思
不知道身为读者的您是否有没有类似上面两个问题的疑惑,首先应该向这位同学学习,可能有人说他肯定是个初学者,
帖子中有很多这样的回复,类似说楼主死读书啊,不求甚解之列的,不乏攻击性。个人很鄙视这些人,因为其中的大部分
人都在胡说八道,知其然不知其所以然,光是楼主的这份独立思考的态度就值得我们学习。好了,圆规正传,这个帖子的问题
就是:
在类中定义并实现的成员函数默认为inline(内联)函数,而Inline函数又不能为虚函数,这是两个正确的结论,这位同学的疑惑是这两个
正确的结论似乎有些冲突,冲突在哪里,因为我们平时在类中定义并实现的成员函数很多都声明为虚函数,下面看代码:
// inline和虚函数冲突吗.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
A()
{
}
virtual void print1() const
{
cout<<"virtual函数 or Inline 函数?"<<endl;
}
void print2() const;
};
void A::print2() const
{
cout<<"非Inline函数"<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
A *pA = new A;
pA->print1();
pA->print2();
system("pause");
不知道身为读者的您是否有没有类似上面两个问题的疑惑,首先应该向这位同学学习,可能有人说他肯定是个初学者,
帖子中有很多这样的回复,类似说楼主死读书啊,不求甚解之列的,不乏攻击性。个人很鄙视这些人,因为其中的大部分
人都在胡说八道,知其然不知其所以然,光是楼主的这份独立思考的态度就值得我们学习。好了,圆规正传,这个帖子的问题
就是:
在类中定义并实现的成员函数默认为inline(内联)函数,而Inline函数又不能为虚函数,这是两个正确的结论,这位同学的疑惑是这两个
正确的结论似乎有些冲突,冲突在哪里,因为我们平时在类中定义并实现的成员函数很多都声明为虚函数,下面看代码:
// inline和虚函数冲突吗.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
A()
{
}
virtual void print1() const
{
cout<<"virtual函数 or Inline 函数?"<<endl;
}
void print2() const;
};
void A::print2() const
{
cout<<"非Inline函数"<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
A *pA = new A;
pA->print1();
pA->print2();
system("pause");